home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / tools / sharp / sxwork1i.lzh / SXWORK1.XDF / INCLUDE / SXMEMORY.H < prev    next >
Text File  |  1994-02-20  |  5KB  |  234 lines

  1. /*
  2.  * sxmemory.h X68k SX_SYSTEM ver 2.01 Copyright 1994 SHARP/First Class Technology
  3.  */
  4. #ifndef __SXMEMORY_H
  5. #define __SXMEMORY_H
  6.  
  7. #ifndef __SXDEF2_H
  8. #include <sxdef2.h>
  9. #endif
  10.  
  11. #ifdef FORWORD
  12. #define __PROTO_TYPE
  13. #endif
  14. #ifdef __STDC__
  15. #define __PROTO_TYPE
  16. #endif
  17.  
  18. typedef struct Block    Block;
  19. typedef struct Master    Master;
  20. /*
  21.  *    メモリマン (Memory Man)
  22.  */
  23. #define M_RSC        (1 << 1)
  24. #define M_MASTER    (1 << 2)
  25. #define M_UNPRG        (1 << 3)
  26. #define M_LOCK        (1 << 4)
  27. #define M_NONREL    (1 << 5)
  28. #define M_TRAIL        (1 << 6)
  29. #define M_ALLOC        (1 << 7)
  30.  
  31. enum MMErrorCode {
  32.     ER_NOMEM    =  -0x0400,
  33.     ER_ODDADR,
  34.     ER_ZONEID,
  35.     ER_NULLPTR,
  36.     ER_NULLHDL,
  37.     ER_EMPHDL,
  38.     ER_NOTFRE,
  39.     ER_NOTALO,
  40.     ER_NOTNON,
  41.     ER_NOTREL,
  42.     ER_NOTLOC,
  43.     ER_NOTUNL,
  44.     ER_NOTPUR,
  45.     ER_NOTUNP,
  46.     ER_ILPROP,
  47.     ER_DIFTYP,
  48.     ER_LESSIZ,
  49.     ER_SPLIT,
  50.     ER_SIZEPU    /* -0x03ee */
  51. };
  52.  
  53. struct Heap {
  54.     long ID;
  55.     long version;
  56.     void *heapData;
  57.     void *trailer;
  58.     long moreMst;
  59.     void (*fncCompact)(void);
  60.     void (*fncPurge)(Heap *, Handle);
  61.     void (*fncMelt)(void);
  62.     int (*fncGrowHeap)(Heap *, long);
  63.     long totalFree;
  64.     Master *freeMst;
  65.     Pointer alloc;
  66.     Pointer spare;
  67.     Pointer purge;
  68.     char vis;
  69.     char pad;
  70.     short usrFlag;
  71.     long cntMemCompact;
  72.     long cntMemPurge;
  73.     long cntMemMelt;
  74.     long cntPtrNew;
  75.     long cntPtrDispose;
  76.     long cntMstBind;
  77.     long cntMstFree;
  78.     long cntMst;
  79.     long usrWord;
  80.     unsigned char data[_VARLEN];    /* ここは可変長データの先頭    */
  81. };
  82.  
  83. struct Block {
  84.     long physicalSize;
  85.     union {
  86.         Heap *toHeap;
  87.         long relativeHdl;
  88.     } u;
  89.     unsigned char property;
  90.     unsigned char sizeCorrection;
  91.     short usrFlag;
  92.     long usrWord;
  93.     unsigned char data[_VARLEN];    /* ここは可変長データの先頭    */
  94. };
  95.  
  96. struct Master {
  97.     union {
  98.         void *toBlockData;
  99.         Master *next;
  100.     } u;
  101.     short number;
  102.     char state;
  103.     char pad;
  104. };
  105.  
  106. #ifdef __PROTO_TYPE
  107.  
  108. Heap *MMHeapInit(void *, void *, int, int (*)(Heap *, long), BOOLEAN);
  109. Master *MMBlockMstGet(Heap *, Block *);
  110. Block *MMMemCompact(Heap *, long);
  111. Block *MMMemPurge(Heap *, long);
  112. Block *MMMemMelt(Heap *, long);
  113. Block *MMMemReserve(Heap *, long);
  114. long MMMemSizeFree(Heap *);
  115. long MMMemSizeComp(Heap *);
  116. long MMMemSizePurg(Heap *);
  117. long MMMemSizeMelt(Heap *);
  118. int MMMemErrorGet(void);
  119. int MMMemErrorSet(int);
  120. Heap *MMChGet(void);
  121. void MMChSet(Heap *);
  122. Pointer MMChPtrNew(long);
  123. int MMChMstMore(void);
  124. Master *MMChMstNew(void);
  125. _Handle MMChHdlNew(long);
  126. Block *MMChCompact(long);
  127. Block *MMChPurge(long);
  128. Block *MMChMelt(long);
  129. Block *MMChReserve(long);
  130. long MMChFreeSize(void);
  131. int (*MMChGrowHeapGet(void))(Heap *, long);
  132. int (*MMChGrowHeapSet(int (*)(Heap *, long)))(Heap *, long);
  133. void (*MMChPurgeGet(void))(Heap *, _Handle);
  134. void (*MMChPurgeSet(void (*)(Heap *, _Handle)))(Heap *, _Handle);
  135. void (*MMChCompactGet(void))(void);
  136. void (*MMChCompactSet(void (*)(void)))(void);
  137. Pointer MMPtrNew(Heap *, long);
  138. Heap *MMPtrHeap(Pointer);
  139. void MMPtrDispose(Pointer);
  140. long MMPtrSizeGet(Pointer);
  141. int MMPtrSizeSet(Pointer, long);
  142. int MMPtrPropGet(Pointer);
  143. int MMPtrPropSet(Pointer, int);
  144. int MMMstAllocate(Heap *);
  145. Master *MMMstBind(Heap *);
  146. _Handle MMHdlNew(Heap *, long);
  147. Heap *MMHdlHeap(_Handle);
  148. void MMHdlDispose(_Handle);
  149. long MMHdlSizeGet(_Handle);
  150. int MMHdlSizeSet(_Handle, long);
  151. int MMHdlEmpty(_Handle);
  152. int MMHdlRealloc(_Handle, long);
  153. int MMHdlMoveHi(_Handle);
  154. int MMHdlPropGet(_Handle);
  155. int MMHdlPropSet(_Handle, int);
  156. void MMHdlLock(_Handle);
  157. void MMHdlUnlock(_Handle);
  158. void MMHdlPurge(_Handle);
  159. void MMHdlNoPurge(_Handle);
  160. int MMHdlIns(_Handle, long, long);
  161. int MMHdlDel(_Handle, long, long);
  162. Block *MMMemHiReserve(Heap *, long);
  163. Block *MMPtrBlock(Pointer);
  164. Block *MMHdlBlock(_Handle);
  165. Master *MMHdlMstGet(Heap *, void *);
  166. Block *MMChHiReserve(long);
  167.  
  168. #undef __PROTO_TYPE
  169. #else
  170.  
  171. Heap *MMHeapInit();
  172. Master *MMBlockMstGet();
  173. Block *MMMemCompact();
  174. Block *MMMemPurge();
  175. Block *MMMemMelt();
  176. Block *MMMemReserve();
  177. long MMMemSizeFree();
  178. long MMMemSizeComp();
  179. long MMMemSizePurg();
  180. long MMMemSizeMelt();
  181. int MMMemErrorGet();
  182. int MMMemErrorSet();
  183. Heap *MMChGet();
  184. void MMChSet();
  185. Pointer MMChPtrNew();
  186. int MMChMstMore();
  187. Master *MMChMstNew();
  188. _Handle MMChHdlNew();
  189. Block *MMChCompact();
  190. Block *MMChPurge();
  191. Block *MMChMelt();
  192. Block *MMChReserve();
  193. long MMChFreeSize();
  194. int (*MMChGrowHeapGet())();
  195. int (*MMChGrowHeapSet())();
  196. void (*MMChPurgeGet())();
  197. void (*MMChPurgeSet())();
  198. void (*MMChCompactGet())();
  199. void (*MMChCompactSet())();
  200. Pointer MMPtrNew();
  201. Heap *MMPtrHeap();
  202. void MMPtrDispose();
  203. long MMPtrSizeGet();
  204. int MMPtrSizeSet();
  205. int MMPtrPropGet();
  206. int MMPtrPropSet();
  207. int MMMstAllocate();
  208. Master *MMMstBind();
  209. _Handle MMHdlNew();
  210. Heap *MMHdlHeap();
  211. void MMHdlDispose();
  212. long MMHdlSizeGet();
  213. int MMHdlSizeSet();
  214. int MMHdlEmpty();
  215. int MMHdlRealloc();
  216. int MMHdlMoveHi();
  217. int MMHdlPropGet();
  218. int MMHdlPropSet();
  219. void MMHdlLock();
  220. void MMHdlUnlock();
  221. void MMHdlPurge();
  222. void MMHdlNoPurge();
  223. int MMHdlIns();
  224. int MMHdlDel();
  225. Block *MMMemHiReserve();
  226. Block *MMPtrBlock();
  227. Block *MMHdlBlock();
  228. Master *MMHdlMstGet();
  229. Block *MMChHiReserve();
  230.  
  231. #endif __PROTO_TYPE
  232.  
  233. #endif __SXMEMORY_H
  234.